Gestion et abstraction des données sur le Web : Projet de création (Optionnel) (Maquette)

Durée estimée: 90 minutes

Version textuelle

Présentation

Dans une version précédente du quiz, nous avons appris à enregistrer les données du quiz dans une base de données FirebaseDb, et à charger les données du quiz au démarrage de l'application.
Comme nous l'avons vu, le fait de stocker en ligne les données du Quiz permet de gérer et modifier l'application beaucoup plus facilement. On peut modifier les questions ou en ajouter sans avoir à reconstruire et rediffuser l'application.
Dans la pratique, le fait d'avoir séparé les données de persitantes de l'algorithme, permet d'avoir une application plus puissante et plus flexible, correspondant à un niveau d'abstraction plus élevé.

Peut-on aller plus loin dans cette direction ?

Une des limites actuelles est de ne proposer qu'un seul Quiz. Que doit-on changer pour proposer un nombre quizz illimité, à charger depuis une base Firebase ?

Ce tutoriel et projet) un modèle de liste de listes pour arriver à cette application encore plus flexible et générale.

Objectifs: Dans cette leçon ous allez apprendre à

  • créer une application qui propose des quiz multiples à partir d'une abse de données unique;
  • créer une structure de données qui utilise le modèle des listes de listes;
  • vous protéger contre différences sources de bugs courants quand on utilise une base de données.

Tutoriel Partie I: Mise en place et configuration de la base de données Firebase

Pour commencer, ouvrez App Inventor dans un onglet séparé avec ce modèle du quiz du président et suivez le totoriel qui suit.


Tutoriel Partie II: traitement des données du Quiz

Projets de création

Voici quelques pistes pour créer vos propres évolutions du Quiz.

  • Quiz à choix multiples. Après avoir suivi le tutoriel, sauvegardez une copie de votre application et créez une nouvelle version qui permettra les quiz à choix multiples. Le projet n'est pas facile, car il implique de modifier la base de données elle-même. Voici la liste des tâches à accomplir :
    • Modifier la base de données:
      Pour proposer des quiz à choix multiples, il est nécessaire de revoir la manière dont les données du quizz sont organisées (ce que l'on appelle le modèle de données). Une première manière de faire est d'ajouter une quatrième liste parallèle : la liste des choix multiples. Comme chaque item de cette liste comprend plusieurs proposition, chaque item est donc une liste. La liste des choix multiples est donc une liste de listes.
      REMARQUE 1 : Si on écrit la bonne réponse une fois dans la liste des bonnes réponses et une fois dans la liste des choix, on risque de faire des fautes d'orthographe et la bonne réponse ne sera pas reconnue, donc au lieu de dupliquer l'information il vaut mieux que la liste des bonens réponses soit rempléce par la liste des numéros de la bonne réponse. Elle ne sera donc écrite qu'une seule fois, sans risque d'erreur.

      Le modèle correspondant est représenté à gauche de la figure ci-dessous.
      Une autre possibilité pour organiser la même information est illustrée à droite, avec une seule liste de premier niveau dont chque item regroupe toutes les informations relatives à une question : le texte de la question, le numéro de la réponse, l'URL de la photo et la liste des choix pour cette question.
      Quels sont à votre avis les avantages et inconvénients de ces deux organisations ?

    • Modifier l'interface utilisateur (UI):
      Modifiez l'interface utilisateur pour gérer les choix multiples. Vous pouvez utiliser un Sélectionneur de liste, mais si vous voulez innover avec un nouveau composant essayez le "curseur animé component" (alias spinner en anglais). Ce composant est similaire au sélectionneur de Liste (ListPicker), maisn conveint mieux pour les menus de choix. (INDICE: Si vous utlisez un "curseur animé" (Spinner), lisez bien la documentation avant de concevoir la base de données. Ce composant marche mieux si le prmeier choix est 'Select one of the following'.)
    • Modifier l'Algorithme:
      Vous devrez modifier l'algorithme dans le gestionnaire d'évènement FirebaseDB.ValeurReçue (.GotResult) et ailleurs pour gérer les choix multiples.

    Pour votre Portfolio

    Créez une page nommée : Quiz générique dans la catégorie "Réflexions" de votre portfolio et répondez aux questions suivantes:

    1. Identifiez une procédure que vous avez définie ou modifiée pour ce projet et décrivez comment il vous a permis de réduire la complexité du programme. Joignez une copie d'écran pour les blocs de programmes correspondants.
    2. Dans votre code, identifiez un algorithme qui dait une requête à la bse de données. Expliquez le caractère asynchrone de l'algorithm. Joignez une copie d'écran pour les blocs de programmes correspondants.